Pipes ব্যবহার করে দুটি প্রক্রিয়ার মধ্যে যোগাযোগ

প্র্যাকটিস প্রোজেক্টস - ইন্টার প্রসেস কমিউনিকেশন (Inter Process Communication) - Computer Science

424

Pipes হল Inter-Process Communication (IPC) এর একটি পদ্ধতি যা একটি প্রক্রেসের আউটপুটকে অন্য একটি প্রক্রেসের ইনপুটের সাথে সংযুক্ত করে। এটি ডেটার স্ট্রিম হিসেবে কাজ করে এবং একে অপরের মধ্যে তথ্যের স্রোত তৈরি করে। এটি সাধারনত দুই ধরনের হয়: Anonymous Pipes এবং Named Pipes

Anonymous Pipes

Anonymous Pipes সাধারণত বাবা-মা এবং সন্তানের প্রক্রেসের মধ্যে একমাত্র যোগাযোগের জন্য ব্যবহৃত হয়। এগুলি সাধারণত একটি অস্থায়ী কৌশল হিসেবে ব্যবহৃত হয় এবং নামহীন।

Named Pipes (FIFO)

Named Pipes বা FIFO (First In First Out) হল একটি নামযুক্ত পাইপ যা একাধিক প্রক্রিয়ার মধ্যে যোগাযোগের জন্য ব্যবহৃত হয় এবং এটি ফাইল সিস্টেমে একটি নির্দিষ্ট নাম নিয়ে কাজ করে।

উদাহরণ: Pipes ব্যবহার করে দুটি প্রক্রিয়ার মধ্যে যোগাযোগ

এখানে Python এর os মডিউল ব্যবহার করে একটি উদাহরণ দেওয়া হলো যা একটি Anonymous Pipe তৈরি করে এবং দুটি প্রক্রিয়ার মধ্যে যোগাযোগ স্থাপন করে।

import os
import time

# Pipe তৈরি করা
read_fd, write_fd = os.pipe()  # read_fd: Read end, write_fd: Write end

# Child process তৈরি করা
pid = os.fork()

if pid == 0:  # Child process
    os.close(write_fd)  # Parent write end close
    time.sleep(1)  # Wait for parent to write
    # Read data from the pipe
    message = os.read(read_fd, 1024).decode('utf-8')
    print(f"Child received: {message}")
    os.close(read_fd)  # Close read end

else:  # Parent process
    os.close(read_fd)  # Child read end close
    # Write data to the pipe
    os.write(write_fd, b"Hello from Parent Process!")
    os.close(write_fd)  # Close write end

    os.wait()  # Wait for child process to finish

কোড ব্যাখ্যা:

১. Pipe তৈরি করা: os.pipe() কলের মাধ্যমে একটি পাইপ তৈরি করা হয়, যা দুটি ফাইল ডিস্ক্রিপ্টর প্রদান করে: একটি পড়ার জন্য (read_fd) এবং একটি লেখার জন্য (write_fd)।

২. Child Process তৈরি করা: os.fork() ব্যবহার করে একটি নতুন প্রসেস তৈরি হয়। এটি দুটি প্রক্রিয়াতে বিভক্ত হয়: পিতামাতার (Parent) এবং সন্তানের (Child)।

৩. Parent Process:

  • পিতামাতার প্রক্রিয়া পাইপের লেখার শেষে (write end) একটি বার্তা লেখে এবং পরে লেখার প্রান্ত বন্ধ করে।

৪. Child Process:

  • সন্তানের প্রক্রিয়া পাইপের পড়ার শেষে (read end) একটি বার্তা পড়ে এবং সেটি প্রদর্শন করে।

৫. Synchronization:

  • time.sleep(1) ব্যবহার করা হয় যাতে পিতামাতা প্রথমে ডেটা লেখার পরে সন্তানের প্রক্রিয়া পড়তে সক্ষম হয়।

উপসংহার

Pipes ব্যবহার করে দুটি প্রক্রিয়ার মধ্যে যোগাযোগ একটি কার্যকরী পদ্ধতি। এটি প্রসেসগুলির মধ্যে সহজে তথ্য আদান-প্রদান করতে সহায়ক এবং উন্নত কার্যক্ষমতা প্রদান করে। Python ব্যবহার করে উল্লিখিত উদাহরণটি একটি সহজ বাস্তবায়ন, যা জানায় কিভাবে Pipes ব্যবহার করে প্রক্রেসের মধ্যে যোগাযোগ করা যায়।

Promotion

Are you sure to start over?

Loading...